#include<iostream>
#include <unistd.h> 
#include<signal.h>
#include<cstdlib>
#include<functional>
#include<vector>

// using func = std::function<void()>;

// std::vector<func> v;


// void Test1()
// {
//     std::cout<<"测试任务一"<<std::endl;
// }

// void Test2()
// {
//     std::cout<<"测试任务二"<<std::endl;
// }

// void Test3()
// {
//     std::cout<<"测试任务三"<<std::endl;
// }


void Test(int sig)
{   
    std::cout<< "test:" << sig  << std::endl;
    //signal(SIGTSTP,SIG_IGN);
    //alarm(1);
    // for(auto& e: v)
    // {
    //     e();
    // }
    while(true)
    {
        sigset_t pending;
        sigpending(&pending);
        for(int i = 31;i >= 1;--i)
        {
            if(sigismember(&pending,i))
            {
                std::cout<<1;
            }
            else
            {
                std::cout<<0;
            }
        }
        std::cout<<std::endl;
        sleep(1);
    }
}

// void PrintPending(const sigset_t& pending)
// {
//     std::cout<< "pending:";
//     for(int i = 31;i >= 1;--i)
//     {
//         if(sigismember(&pending,i))
//         {
//             std::cout << 1;
//         }
//         else
//         {
//             std::cout << 0;
//         }
//     }
//     std::cout<<std::endl;
// }


int main()
{
    // v.emplace_back(Test1);
    // v.emplace_back(Test2);
    // v.emplace_back(Test3);

    // signal(SIGALRM,Test);
    // alarm(1);
    // while(true)
    // {
    //     pause();
    // }
    // signal(SIGTSTP,Test);
    // while(true)
    // {
    //     std::cout<<"nihao"<<std::endl;
    //     sleep(1);
    // }
    //sigset_t s;
    // signal(SIGINT,Test);
    // sigset_t oblock,block;
    // sigemptyset(&block);
    // sigaddset(&block,SIGINT);
    // sigprocmask(SIG_SETMASK,&block,&oblock);
    // int cnt = 0;
    // while(true)
    // {
    //     sigset_t pending;
    //     sigpending(&pending);
    //     PrintPending(pending);
    //     if(cnt == 10)
    //     {
    //         std::cout << "解除屏蔽" <<std::endl;
    //         sigprocmask(SIG_SETMASK,&oblock,nullptr);
    //     }
    //     else if(cnt == 15)
    //     {
    //         break;
    //     }
    //     ++cnt;
    //     sleep(1);
    // }
    // std::cout<<"for the test" <<std::endl;
    // int a = 10;
    // a /= 0;
    // std::cout<<"for the test" <<std::endl;
    // std::cout<<"for the test" <<std::endl;
    // std::cout<<"for the test" <<std::endl;
    // struct sigaction act,oact;
    // sigemptyset(&act.sa_mask);
    // sigaddset(&act.sa_mask,3);
    // act.sa_handler = Test;
    // sigaction(SIGINT,&act,&oact);
    // while(true)ca
    // {
    //     std::cout << getpid() <<std::endl;
    //     sleep(1);
    // }
    while(true)
    {
        std::cout << getpid() <<std::endl;
        sleep(1);
    }




    return 0;
}
